const db = wx.cloud.database()
let content = '',
    id = '',
    origin_data = [],
    date_List = [],
    obtWordList = [],
    movableTmpX = 0,
    movableTmpY = 0,
    selectCnt = 0,
    conSumDat = [],
    Arry = [],
    oneSet = [],
    movableChangeFlag = false; // 是否移动
Page({
    data: {
        flag: false,
        date: '04-12',
        DataList: [],
        triggered: false,
        review: false,
        readShow: true,
        selectNot: true
    },


    select() { // 处理数据
        console.log("被调用", this.data.review)
        console.log('selectCnt', selectCnt)
        if (wx.getStorageSync('selectData').length > 0) {
            if (this.data.review == true) {
                oneSet.filter((item) => {
                    item.newArr.forEach(cnt => { // 将获取数据的单词以列表形式缓存
                        origin_data.push(cnt.con); // 合并此日期下的所有集合
                        Arry = [].concat(...origin_data)

                        date_List.push(item._id) // 获取日期
                        cnt.con.forEach((li) => {
                            conSumDat.push(li.content)
                        })
                    });
                })
                wx.setStorageSync('selectData', conSumDat)
                console.log('Arry:', Arry)
                console.log('conSumDat', conSumDat)
            } else { // 可以监听review TODO
                this.onUnload()
                console.log(Arry, conSumDat)
            }

        } else {
            wx.showToast({
                title: '请选择要复习的数据',
                icon: 'none'
            })
        }


    },

    wordSpell() {
        console.log("拼写模式")
        new Promise(() => {
            this.select()
            wx.navigateTo({
                url: '/pages/study/wordSpell/wordSpell?date=' + JSON.stringify(date_List) + '&origin_data=' + JSON.stringify(Arry)
            })
        })
    },

    wordRead() {
        console.log("拼读模式")
        this.select()
        wx.navigateTo({
            url: '/pages/study/wordRead/wordRead?arr=' + JSON.stringify(Arry)
        })
    },

    obtlist(e) { // 获取列表中的单词
        // console.log(e)
        // var current = e.currentTarget.dataset.item
        // let pro = 'wordsList[' + current + ']._id.flag';
        // let value = !this.data.wordsList[current]._id.flag
        // this.setData({
        //         [pro] :  value
        //})

        let index = e.currentTarget.dataset.index; // 选中数据
        obtWordList[index]._id.flag = !obtWordList[index]._id.flag
        this.setData({
            wordsList: obtWordList,
            review: true
        })

        oneSet = obtWordList.filter((item) => { // 获取选中数据
            return item._id.flag
        });
        if (oneSet.length > 0) { // 图标显示
            this.setData({
                review: true
            })
        } else {
            this.setData({
                review: false
            })
        }
        console.log('oneSet:', oneSet)
        wx.setStorageSync('selectData', oneSet)
    },
    /**
     * 单词详情
     */
    transfer(e) {
        console.log('e', e)
        id = e.target.dataset._id; // 这里传的是content
        console.log('id：', id)

        wx.navigateTo({ // 暂定为跳转提示页面
            url: '/pages/dictionary/wordDetail/wordDetail?content=' + id,
        })
    },

    /**
     * 更新单词状态
     */
    async onLoad(options) {
        // 分块显示当天已学单词
        let userInfo = wx.getStorageSync('userInfo'),
            openid = userInfo.openid;
        console.log(openid)
        let res = await wx.cloud.callFunction({
            name: 'getReviewList',
            data: {
                type: 'review',
                openid: openid
            }
        })
        console.log(res)
        // return
        console.log('分类', res.result.list)
        obtWordList = res.result.list
        this.setData({
            wordsList: obtWordList
        })

    },


    //   onReady: function () {
    //     // 之所以写在这里，是因为毕竟是初始化样式嘛，写在 onLoad 和 onShow 里边都不能确保样式已经渲染完毕，页面已经准备完毕了，所以写在 onReady 里边初始化
    //     const query = wx.createSelectorQuery().in(this) // 这个 in(this) 在自定义组件内部使用相当有用，这里有没有都行
    //     query.selectViewport().boundingClientRect()
    //     query.selectAll('#movableArea,#movableView').boundingClientRect()
    //     query.exec(res => { // 统一获取样式
    //       let viewportInfo = res[0] // 这里可以获取当前屏幕视口的宽高，如果设置 movableArea 区域的话，这个相当有用，这里没用上
    //       let movableAreaInfo = res[1][0] // 这是获取的 movableArea 样式
    //       let movableViewInfo = res[1][1] // 这里获取的 movableView 样式
    //       let x = movableAreaInfo.width - movableViewInfo.width - 48 // 这里之所以多减了 48 ，只是作为展示动态的初始化 x,y 怎样不让 movableView 过渡过去
    //       let y = movableAreaInfo.height - movableViewInfo.height - 48 // 这里之所以多减了 48 ，只是作为展示动态的初始化 x,y 怎样不让 movableView 过渡过去
    //       this.setData({
    //         x,
    //         y,
    //         viewportInfo,
    //         movableAreaInfo,
    //         movableViewInfo
    //       })
    //       setTimeout(() => {
    //         this.setData({
    //           movableViewAnimation: true // 初始化 x y 之后把动画打开，注意：一定要和上边的设置 x y 初始值区分开，不然设置初始值的时候还是会过渡过去，这个就没意义了
    //         })
    //       })
    //     })
    //   },

    // 滑动滑块 记录滑块当前的 X,Y
    //   movableViewChangeHandler: function ({
    //     detail
    //   }) {
    //     let {
    //       x,
    //       y,
    //       source
    //     } = detail
    //     if (source === 'touch') { // 这里是只记录手指滑动的 X Y
    //       movableChangeFlag = true // 代表移动过
    //       movableTmpX = x // 记录滑块当前的 X
    //       movableTmpY = y // 记录滑块当前的 Y
    //     }
    //   },

    // 手指滑动结束事件
    //   movableViewTouchEndHandler: function (e) {
    //     if (movableChangeFlag) { // 移动过才触发，不移动单纯点击不触发
    //       let {
    //         width: movableAreaWidth,
    //         height: movableAreaHeight
    //       } = this.data.movableAreaInfo
    //       let {
    //         width: movableViewWidth,
    //         height: movableViewHeight
    //       } = this.data.movableViewInfo
    //       let tmpX = 0,
    //         tmpY = movableTmpY
    //       // 计算当前 X 偏向于左还是右
    //       if (movableTmpX + movableViewWidth / 2 > movableAreaWidth / 2) { // 如果偏向于右侧，则向右靠拢
    //         tmpX = movableAreaWidth - movableViewWidth // 设置 X 为最右侧
    //       } else { // 如果偏向于左侧，则向左靠拢
    //         tmpX = 0 // 设置 X 为最左侧
    //       }
    //       // 第一次设置 X,Y
    //       this.setData({
    //         x: tmpX,
    //         y: tmpY
    //       })
    //       // 第二次设置 X,Y ，实际上这里只需要设置 Y 就行了，因为有问题的是 Y，不过这里把 X 也设置了，防止 X 也有问题
    //       setTimeout(() => {
    //         this.setData({
    //           x: tmpX,
    //           y: tmpY
    //         })
    //         // 其实这里延迟不给就行，但是为了确保可行性，还是协商了 20ms 的延迟，基本上没啥感知
    //       }, 20)
    //       movableChangeFlag = false // 重置为未移动过
    //     }
    //   },

    onShow() {
        // 判断今日是否还可使用拼读功能
        let todayTime = new Date(new Date).getTime()
        if ((wx.getStorageSync('limitCount').limitCnt <= 10 || todayTime > wx.getStorageSync('limitCount').endTime) || !wx.getStorageSync('limitCount')){
            this.setData({
                readShow:true
            })
        }else{
            this.setData({
                readShow:false
            }) 
        }
        this.onUnload()
        console.log(date_List, conSumDat, oneSet, Arry, origin_data)
    },

    onUnload() { // 清除数据
        this.setData({
            review: false
        })
        conSumDat = [],
            Arry = [],
            oneSet = [],
            origin_data = [],
            date_List = [],
            wx.removeStorage({
                key: 'selectData',
                success(res) {
                    console.log('已清除selectData')
                }
            })
    }
})